from scrapy import Selector 
import warnings 
# 去除不影响程序运行的警告
warnings.filterwarnings("ignore") 
content = '''
<html>
 <head>
  <title>Selector 实例</title>
 </head>
 <body>
     <div class="centerForm">
        <div>
            <h5 style="margin-bottom: 20px">数据列表：</h5>
        </div>
 
        <a href="error.html" style="display:none;">数据1</a>
        <a href="priceList.html" style="font-size: 16px;">数据2</a>
        <div>
            <h5>表单数据：</h5>
        </div>
 
        <form>
            用户名称：<input type="text" name="name">
            邮箱地址：<input type="text" name="email">
            <input type="hidden" name="phone">
            <input type="text" name="addr" class="hiddenInput">
            <input type="submit" value="提交">
        </form>
     </div>
     <div id='image'>
        <a href='img1.html'>img1 text<img src='img1.png'/></a>
        <a href='img2.html'>img2 text<img src='img2.png'/></a>
     </div>
 </body>
</html>
'''
 
selector = Selector(text=content)
 
# CSS选择器方式
print("-----------CSS选择器方式------------")
# 通过CSS选择器获取第一个img标签的src属性
print("1.第一个img标签的src属性值：", selector.css('img').attrib['src'])
# 通过CSS选择器获取所有a标签的href属性
print("2.所有a标签的href属性值：", selector.css('a::attr(href)').getall())
# 通过CSS选择器选择有href属性并且href属性中包含img的a标签
print("3.href属性中包含img的a标签的href属性值：", selector.css('a[href*=img]::attr(href)').getall())
# 通过CSS选择器选择type属性包含text的input标签下的name的属性值
print("4.type属性中包含text的input标签的name属性值：", selector.css('input[type*=text]::attr(name)').getall())
# 通过CSS选择器获取所有a标签的文本信息
print("5.获取所有a标签的文本信息：", selector.css('a::text').getall())
# 通过CSS选择器获取id为image节点下的所有文本
print("6.获取id为image节点下的所有文本：", selector.css('#image *::text').getall())
 
# XPath选择器方式
print("-----------XPath选择器方式------------")
# 通过XPath选择器获取所有input标签下的type属性值
print("7.获取所有input标签下的type属性值：", selector.xpath('//input/@type').getall())
# 通过XPath选择器获取所有a标签下的href属性值
print("8.获取所有a标签下的href属性值：",  selector.xpath('//a/@href').getall())
